package com.yds.developtools.utils

import android.content.Context
import android.content.pm.PackageInfo
import android.os.Build

/**
 * 作者:     YDS
 * 创建时间: 2023/5/29 11:10
 * 页面描述: 包名相关帮助类
 * tips：<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 */
@Suppress("unused")
object YDSPackageHelper : YDSBaseHelper() {

    private var packageInfo: PackageInfo = getContext().packageManager
        .getPackageInfo(getContext().packageName, 0)

    /*** 作者: YDS 时间: 2023/5/29 11:11 描述: 获取本地版本号 ***/
    @Suppress("DEPRECATION")
    fun getLocalVersionCode(): Long {
        val versionCode =
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
                packageInfo.longVersionCode
            } else {
                packageInfo.versionCode.toLong()
            }
        return versionCode
    }

    /*** 作者: YDS 时间: 2023/5/29 11:11 描述: 获取本地版本名 ***/
    fun getLocalVersionName(): String = packageInfo.versionName

    /*** 作者: YDS 时间: 2023/5/29 11:23 描述: 将版本名转换成版本号 ***/
    fun convertToVersionCode(versionName: String): Int =
        Integer.parseInt(versionName.replace(".", ""))

    /*** 作者: YDS 时间: 2025/4/18 11:31 描述: 获取指定apk的版本名 ***/
    fun getApkVersionName(context: Context, apkPath: String?): String? {
        val packageManager = context.packageManager
        val packageInfo = packageManager.getPackageArchiveInfo(apkPath, 0)
        if (packageInfo != null) {
            return packageInfo.versionName
        }
        return null
    }

    /*** 作者: YDS 时间: 2025/4/18 11:31 描述: 获取指定apk的版本号 ***/
    fun getApkVersionCode(context: Context, apkPath: String?): Long {
        val packageManager = context.packageManager
        val packageInfo = packageManager.getPackageArchiveInfo(apkPath, 0)
        if (packageInfo != null) {
            return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                packageInfo.longVersionCode
            } else {
                packageInfo.versionCode.toLong()
            }
        }
        return -1
    }
}